import store from '../../westore/store'
import create from '../../westore/utils/create'

import Config from "../../config"
import Api from "../../utils/api.old"
import {
  Modal
} from "../../utils/common"
import deepCopy from "../../utils/common"
const app = getApp(),
  regeneratorRuntime = require("../../utils/regenerator-runtime/runtime")
const player = wx.getBackgroundAudioManager()
create(store, {
  data: {
    openid: "",
    userInfo: null,
    toView: "intro",
    step: "0",
    showChildren:false,
    showChildren2: false,
    showInfodetail:false,
    userState:{
      unionid:"",
      setting: false,
      subscribe: false
    },
    showofficial:false,
    canCreate:true,
    player:"",
    isplaying:false,
    setting: {
      custom: 0,
      days: 7,
      type:"每天",
      minuts: 5,
      music: 1,
    },
    settingList:[],
    settingMinuts:"请选择",
    range:{
      type: ["每天","每周","每月"],
      minuts: ['请选择', '3分钟' ,'5分钟', '10分钟'],
      music: [1, 2, 3],
    },
    text: [
      "感谢\n您的参与", "愿\n我们一起\n轻松减压\n向前行",
      "如果你的生活顺利幸福\n恭喜！\n你现在就可以退出\n如果你对生活感到\n焦虑，压抑，迷茫，无助\n\n冥想\n是你送给自己最宝贵的一份礼物，而且就像天下最美好的事物一般都是免费的一样，我认为冥想也是一个私人的体验，它本身就无价的。\n",
      "关于暂停3分钟",
      "——\n“996”、“007”、“转型了了没？”\n……快节奏、高压力地生活，让您喘不过气来？\n\n您经历的，我们也正在经历。邀请您与我们一起，利用碎片时间，每天暂停3分钟，以冥想这种简单有效的⽅式，轻松减压，积蓄力量，继续前行。",
      "为什么是3分钟",
      "——\n多的时间您也没有啊。\n\n3分钟虽然很短，但幸庆的是，它依然行之有效。在您等飞机的间隙，在会议开始之前，在等咖啡煮好的时候……几乎任何时间，拿出3分钟来冥想，就有助于改变激素平、转换情绪、稳定气场。如果您能抽出更多的时间，那当然更好。如果不能，3分钟也是很好的转变。",
      "关于冥想",
      "——\n简单的说，冥想就是停止意识以外的一切活动，达到“忘我之境”的一种心灵自律行为。从严格意义上讲，冥想是一种感觉范畴的理念，只有个体通过实际体验才可以真正理解。\n\n冥想源于佛教，⼀直被认为是佛教中的⼀种神秘仪式，很少人去尝试练习。从上世纪六⼗年代开始，科学家对冥想进⾏广泛研究，逐渐发现它对⽣命、对生活的种种益处。如今冥想已被越来越多的人认识并实践，成为了超越宗教的身⼼灵修⾏方式。”",
      "冥想的益处\n",
      ["——\n", "减缓压力\n", "冥想是帮助缓解压力，降低皮质醇并促进放松的简单有效的方法之一。\n研究发现，参加仅4天的冥想会导致血液中血清皮质醇水平降低，这意味着压力下降。\n\n", "减少焦虑和抑郁症状\n", "冥想有利于放松和平静，有相当多的研究支持冥想对减少焦虑和抑郁的有效性。\n\n", "有助于改善失眠\n", "一项研究发现，练习冥想6次的成年人，其睡眠和失眠情况得到明显改善。\n\n", "提升创造力、判断力\n", "现代医学已经证明，使用右脑时涌现出大量的α波。冥想可以让我们的左脑平静下来，使大脑处于α波状态。当左脑入静，不生杂念的时候，右脑就会涌现出智慧来。\n\n", "提升大脑能力\n", "哈佛大学的莎拉博士所发布的一项研究结果，八周的冥想课程，能有效提高大脑能力，包括记忆力。\n\n", "降低心率，降低血压", "\n冥想使人放松，有助于降低体内产生的压力荷尔蒙，从而降低心率。冥想有助于打开血管并改善血流量，并有利于降低血压。\n\n", "变得快乐\n","一份发表在美国心理学协会的研究报告指出，就算只做几分钟的冥想，或多或少都有助于提升社会连接感，对新奇的事物展现积极的一面。"],
      "准备\n",
      ["——\n相信我，再没有⽐此更简单的准备了。\n\n", "安静的环境\n", "如果这是您的第一次练习，或者刚开始练习不久，建议您找一个安静的环境开始。如果已经练习一段时间，或者有比较好的自我控制力，办公室、户外等任何地⽅都可以开始您的冥想之旅，只要您喜欢。\n\n", "舒适的着装和坐姿\n", "着装以舒适为宜，不要太紧或太松。放松自如的坐姿，无需盘腿。\n\n", "打开「暂停3分钟」小程序\n", "打开「暂停3分钟」小程序，选择时间和合适的引导音乐，开始练习。\n\n", "固定的时间冥想\n", "早上、下午3-4点、睡前，都是很好的时间。无论什么时间，建议在固定时间冥想。当然，根据自己的实际情况，灵活安排时间练习也没有问题。\n\n", "保持耐心，坚持\n", "冥想初期的效果因人而异，保持耐心，长期坚持，一定会有效果，毕竟每天才3分钟，这不是一件很难的事。"],
      "常见问答\n",
      ["——\n", "冥想多久才会有效果？\n", "这个问题就像我们小时候问，燕⼦什么时候飞来一样。我们不能确切地说某天的某个时间，只能说春天，或者当空⽓中积蓄了足够的温暖，燕子就会飞来。\n\n每天3分钟，或许几天您就会有感觉，或许需要坚持几周或更⻓时间。没关系，开始之后，我们每天都会在您选定的时间提醒您。每天3分钟，一点也不难，我们陪您一起，静侯您身心的春天。\n\n", "练习冥想后，发现想法更多了，是不是效果更差了？\n", "这是一个很好的进展，说明您开始注意自己的念头了，慢慢练习自己不被念头牵引，就可以体验到冥想带来的平静和快乐。\n\n", "练习冥想需要有宗教信仰吗？\n", "不需要。这是一个经过研究证明，可以很好减轻压力的方法，任何人都可以练习。\n\n", "以后会收费吗？\n", "「暂停3分钟」是一个非盈利项目，线上练习，永久免费。各城市的「体验日」，因场地、嘉宾等费用，会适当收费，以实际通告为准。\n\n更多疑问，请移步「分享」提问，我们会及时回复。"]
    ]
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: async function(options) {
    wx.showLoading({
      title: '加载中',
    })
    const _this = this;
    const data = await Api.Login(),
    openid = data.openid
    _this.store.data.openid = data.openid;
    // let openid = wx.getStorageSync("openid") || ""
    // if (openid === "") {
    //   const data = await Api.Login()
    //   openid = data.openid;
    //   _this.store.data.openid = data.openid;
    // }
    const [userInfo, encryptedData, iv] = await Api.getUserInfo()
    console.log([userInfo, encryptedData, iv])
    if (!userInfo) {
      //Api.gotoAuth()
      wx.hideLoading();
      wx.hideTabBar();
      _this.setData({ step: '1' })
      return
    }
    // const loginres = await Api.Login()
    const res = await Api.decryptData(openid, encryptedData, iv);
    if(res.status==0){
      _this.store.data.openid = openid;
      _this.store.data.userState = res.data;
      _this.store.data.userInfo = userInfo;
      _this.update();
    }else{
      //Api.gotoAuth()
      wx.hideLoading();
      wx.hideTabBar();
      _this.setData({ step: '1' })
      return false
    }
    const setting = await Api.getAllSetting(openid);
    if(setting.status==0){
      if (setting.data.length > 0) {
        _this.setData({ step: '2' })
        _this.store.data.settingList = setting.data.map(function (e) {
          console.log(e)
          if (e.custom == '1') {
            switch (e.type) {
              case 'day': e.type = '每天'; break
              case 'week': e.type = '每周'; break
              case 'month': e.type = '每月'; break
            }
          }
          return e;
        });
      }else{
        _this.setData({ step: '1' })
      }
      const list = _this.store.data.settingList;
      _this.setData({ canCreate: list.every(e => e.complete == "1")})
      // _this.store.data.settingList = []
      _this.update();
    }else{
      wx.showToast({
        title: '获取数据失败，请重试',
        icon: 'none'
      })
    }
    wx.showTabBar();
    wx.hideLoading();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function() {
    const _this = this;
    setTimeout(function(){
      _this.setData({
        toView: "index"
      })
    },3000)
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: async function() {

  },
  scrollTo: function(e) {
    const _this = this;
    _this.setData({
      showInfodetail: true,
      toView: e.currentTarget.dataset.to
    })
  },

  showChild: function(){
    const _this = this;
    if(_this.data.showChildren=="learn"){
      _this.setData({
        showChildren: ""
      })
    }else{
      _this.setData({
        showChildren: "learn"
      })
    }
  },

  showChild2: function () {
    const _this = this;
    _this.setData({
      showChildren: "experience"
    })
  },

  closeDetail: function () {
    const _this = this;
    _this.setData({
      showInfodetail: false,
      toView:'index'
    })
  },
  step: function (e) {
    const _this = this;
    const step = e.currentTarget.dataset.step
    player.stop();
    _this.setData({
      step
    })
  },
  guide: function (e) {
    const _this = this;
    if (_this.store.data.settingList.length > 0) {
      _this.setData({ step: '3' })
    }else{
      if (_this.store.data.userState.unionid!=""){
        _this.setData({ step: '3' })
      }
      else{
        Api.gotoAuth();
      }

    }
  },
  back: function (e) {
    const _this = this;
    _this.setData({
      toView: 'index'
    })
    _this.step(e);
  },
  official:function(){
    console.log("show")
    const _this = this;
    _this.setData({
      showofficial:true
    })
  },
  createSetting: function(){
    const _this = this;
    const list = _this.store.data.settingList;
    if (list.every(e => e.complete=="1")){
      _this.setData({step:"3"})
    }else{
      wx.showToast({
        title: '您还有未完成的计划，不能继续新建',
        icon:"none"
      })
    }
  },
  setday: function (e) {
    const _this = this;
    const value = e.currentTarget.dataset.value
    _this.store.data.setting.days = value;
    _this.store.data.setting.custom = 0;
    _this.setData({ settingMinuts: "请选择" });
    _this.store.data.setting.minuts = 0;
    _this.update();
  },

  setmusic: function (e) {
    const _this = this;
    const index = e.currentTarget.dataset.index
    _this.store.data.setting.music = _this.data.range.music[index];
    _this.store.data.setting.custom = 0;
    _this.setData({ settingMinuts: "请选择" });
    _this.store.data.setting.minuts = 0;
    _this.update();
    player.title = "音乐" + _this.store.data.setting.music;
    player.src = Config.baseUrl + "musics/3/" + _this.store.data.setting.music + "/music_1.mp3";
  },
  settype: function (e) {
    const _this = this;
    const index = e.currentTarget.dataset.index
    _this.store.data.setting.type = _this.data.range.type[index];
    _this.update();
  },
  // setminuts: function (e) {
  //   const _this = this;
  //   const index = e.currentTarget.dataset.index
  //   _this.store.data.setting.minuts = _this.data.range.minuts[index];
  //   _this.update();
  // },

  changeself: function(){
    const _this = this;
    _this.store.data.setting.custom = _this.store.data.setting.custom==0?1:0;
    _this.update();
  },
  // selectcycle: function(event){
  //   const _this = this;
  //   const index = Number(event.detail.value)
  //   _this.store.data.setting.type = _this.data.range.type[index];
  //   _this.store.data.setting.days = 0;
  //   _this.store.data.setting.custom = 1;
  //   _this.update();
  // },
  selecttime: function (event) {
    const _this = this;
    const index = event.detail.value
    let minuts = 0;
    player.stop();
    switch(index){
      case "1": minuts = 3; _this.setData({ settingMinuts: "3分钟" }); break;
      case "2": minuts = 5; _this.setData({settingMinuts:"5分钟"});break;
      case "3": minuts = 10; _this.setData({ settingMinuts: "10分钟" }); break;
      default: minuts = 0; _this.setData({ settingMinuts: "请选择" }); break;
    }
    _this.store.data.setting.minuts = minuts
    _this.store.data.setting.custom = index == 0 ? 0 : 1;
    _this.update();
  },
  // selectmusic: function (event) {
  //   const _this = this;
  //   const index = Number(event.detail.value)
  //   _this.store.data.setting.music = _this.data.range.music[index]
  //   _this.update();
  // },
  setting: function(){
    const _this = this;
    wx.hideLoading();
    _this.pause();
    _this.setData({ step : "2"})
  },
  arrayMinus: function(oldone,newone){
    let arr = []
    newone.forEach(function(ne){
      const index = oldone.findIndex(function(oe){
        return oe.id==ne.id
      })
      if(index==-1) arr.push(ne)
    })
    return arr;
  },
  setover: async function(){
    const _this = this;
    const openid = _this.store.data.openid;
    const setting = _this.store.data.setting;
    const custom = setting.custom;
    player.stop();
    let arg=[];
    if(custom == 0){
      arg.push(setting.days)
      arg.push(setting.music)
    }else{
      switch (setting.type) {
        case "每天": arg.push("day"); break;
        case "每周": arg.push("week"); break;
        case "每月": arg.push("month"); break;
        default: arg.push("day")
      }
      arg.push(setting.minuts)
    }
    wx.showLoading({
      title: '保存中',
    })
    const res = await Api.setSetting(openid, custom, arg)
    // const res = { "status": 0, "msg": "" }
    if(res.status == 0){
      const setting = await Api.getAllSetting(openid);
      let newlist = [];
      if (setting.status == 0) {
        if (setting.data.length > 0) {
          newlist = setting.data.map(function (e) {
            console.log(e)
            if (e.custom == '1') {
              switch (e.type) {
                case 'day': e.type = '每天'; break
                case 'week': e.type = '每周'; break
                case 'month': e.type = '每月'; break
              }
            }
            return e;
          });
          const newone = _this.arrayMinus(_this.store.data.settingList, newlist);
          _this.store.data.settingList = newlist
          const list = _this.store.data.settingList;
          console.log(list)
          _this.setData({ canCreate: list.every(e => e.complete == "1") })
          _this.update();
          wx.hideLoading();
          wx.navigateTo({
            url: `/pages/play/index?id=${newone[0].id}`,
          })
         setTimeout(function(){
           _this.setData({ step: "2" })
         },1000)
        }
      }
    } else {
      wx.showToast({
        title: '设置失败，请重试',
        icon: 'none'
      })
    }
  },
  // play: function(){
  //   const _this = this;
  //   if (!_this.store.data.setting.music.src){
  //     wx.showToast({
  //       title: '播放音乐有误，请重启小程序再试',
  //       icon:'none'
  //     })
  //     return;
  //   }
  //   console.log(_this.store.data.setting.music.src)
  //   _this.data.player.src = _this.store.data.setting.music.src;
  //   _this.data.player.play();
  //   wx.showLoading({
  //     title: '加载中...',
  //   })
  //   const timer = setTimeout(function(){
  //     wx.showToast({
  //       title: '加载音乐超时，请稍后再试',
  //       icon: 'none'
  //     })
  //   },10000)

  //   _this.data.player.onPlay(function(){
  //     _this.setData({ isplaying: true})
  //     clearTimeout(timer);
  //     wx.hideLoading();
  //   })
  //   _this.data.player.onEnded(function(){
  //     _this.setData({ isplaying: false })
  //   })
  //   _this.data.player.onTimeUpdate(function(){
  //     const ct = _this.data.player.currentTime;
  //     const d = _this.data.player.duration;
  //     const progress = ((Number(ct / d) * 0.9) * 100)+"%";
  //     _this.setData({progress})
  //   })
  // },
  // pause: function(){
  //   const _this = this;
  //   // _this.data.player.pause();
  //   _this.setData({ isplaying: false })
  // },
  gotoplay:function(e){
    const _this = this;
    const id = e.currentTarget.dataset.settingid
    console.log(id);
    // const iscomplete = _this.store.data.settingList[index].complete;
    // if(iscomplete=="1"){
    //   wx.showToast({
    //     title: '该计划已完成',
    //     icon:'none'
    //   })
    //   return;
    // }
    wx.navigateTo({
      url: `/pages/play/index?id=${id}`,
    })
  },
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function() {
    const _this = this;
    // _this.data.player.pause();
    _this.setData({ isplaying: false })
    player.stop();
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function() {

  }
})